package com.chinawayltd.ews.sample.service.algorithm;

import java.util.List;

import com.chinawayltd.ews.sample.model.TDriverPlan;
import com.chinawayltd.ews.sample.model.algorithm.DriverPlanVO;
import com.chinawayltd.ews.sample.model.algorithm.DriverWorkVO;
import com.chinawayltd.ews.sample.util.PageData;
import com.chinawayltd.ews.sample.util.excel.ExcelObjModel;
import com.chinawayltd.ews.sample.web.query.DriverGirdQuery;
import com.chinawayltd.ews.sample.web.query.DriverPlanGirdQuery;

/**
 * @program: greeProject
 * @description 司机排班管理
 * @author: chenxin
 * @create: 2018年4月11日 下午10:49:54
 */
public interface DriverPlanService {

	/**
	 * 根据查询条件与分页信息查询列表
	 * @author: chenxin
	 * @date: 2018年4月11日
	 * @param queryParam
	 * @return
	 */
	List<DriverPlanVO> listDriverPlanByPage(DriverPlanGirdQuery queryParam);
	/**
	 * 通过id查询司机排班信息
	 * @author: chenxin
	 * @date: 2018年4月10日
	 * @param id
	 * @return
	 */
	TDriverPlan getById(Long id) throws Exception;

	/**
	 * 新增
	 * @author: chenxin
	 * @date: 2018年4月10日
	 * @param tDriverPlan
	 * @return
	 */
	int add(TDriverPlan tDriverPlan);
	 
	/**
	 * 修改
	 * @author: chenxin
	 * @date: 2018年4月10日
	 * @param tBranchUnVehcle
	 * @return
	 */
	int update(TDriverPlan tDriverPlan);

    /**
     * 删除
     * @author: chenxin
     * @date: 2018年4月10日
     * @param id
     * @return
     */
    int delete(Long id) throws Exception;
    /**
     * 查询所有数据
     * @author: chenxin
     * @param tDriverPlan 
     * @date: 2018年4月12日
     * @return
     */
	List<TDriverPlan> listAll();
	/**
	 * 通过班次查询司机排班
	 * @author: chenxin
	 * @date: 2018年4月16日
	 * @param shiftId
	 * @return
	 */
    List<TDriverPlan> listDriverPlanByShiftId(Long shiftId) throws Exception;
    
    /**
     * 批量删除s
     * @author: chenxin
     * @date: 2018年4月16日
     * @param ids
     * @return
     */
	int deletesByIds(String[] ids);
	
	/**批量导入司机排班信息
	 * @author Fay
	 * @date 2018年5月3日 上午11:55:32
	 * @param list
	 * @return
	 */
	ExcelObjModel insertList(List<PageData> list) throws Exception;
	
	/**判断班次是否冲突，true表示没冲突
	 * @author Fay
	 * @date 2018年5月12日 下午12:21:42
	 * @param tDriverPlan
	 * @return
	 */
	boolean judgeDriverShiftConflict(TDriverPlan tDriverPlan);
	/**
	 * 通过id或者司机id查询司机排班来校验司机的唯一
	 * @author: chenxin
	 * @date: 2018年5月28日 上午11:10:32
	 * @param id
	 * @param name
	 * @return
	 */
	List<TDriverPlan> getByIdAndName(String id, String name);
	/**
	 * 司机连续上班信息
	 * @author: chenxin
	 * @date: 2018年6月7日 上午1:17:21
	 * @param queryParam
	 * @return
	 */
	List<DriverWorkVO> driverContinueWorkGirdData(DriverGirdQuery queryParam);
	/**
	 * 司机连续上班信息删除
	 * @author: chenxin
	 * @date: 2018年6月7日 上午1:32:34
	 * @param id
	 * @return
	 */
	int driverExtendUpdate(Long id) throws Exception;
    
}
